Fix potential slicing with Filter class. (#440)
authortsteven4 <13596209+tsteven4@users.noreply.github.com>
Tue, 17 Dec 2019 14:23:05 +0000 (07:23 -0700)
committerGitHub <noreply@github.com>
Tue, 17 Dec 2019 14:23:05 +0000 (07:23 -0700)
detected by clazy as:
warning: Polymorphic class Filter is copyable. Potential slicing. [-Wclazy-copyable-polymorphic]

filter.h

index 6147afa74d197a2fb5ad68484a9e533264c35140..3d3d6893515b8bbba8d53ccd576f97258d4eb221 100644 (file)
--- a/filter.h
+++ b/filter.h
@@ -35,12 +35,13 @@ public:
   // its base class type.
   // https://wiki.sei.cmu.edu/confluence/display/cplusplus/OOP52-CPP.+Do+not+delete+a+polymorphic+object+without+a+virtual+destructor
   virtual ~Filter() = default;
-  // And that requires us to explicitly default the move and copy operations.
+  // And that requires us to explicitly default or delete the move and copy operations.
+  // To prevent slicing we delete them.
   // https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c21-if-you-define-or-delete-any-default-operation-define-or-delete-them-all.
-  Filter(const Filter&) = default;
-  Filter& operator=(const Filter&) = default;
-  Filter(Filter&&) = default;
-  Filter& operator=(Filter&&) = default;
+  Filter(const Filter&) = delete;
+  Filter& operator=(const Filter&) = delete;
+  Filter(Filter&&) = delete;
+  Filter& operator=(Filter&&) = delete;
 
   virtual QVector<arglist_t>* get_args() = 0;